package com.hsylient.javase.chapter02.demo01.demo06;

import org.junit.Test;

/**
 * 构造代码块
 * <p>
 * 在构造方法执行之前执行
 */
public class ConstructorBlock {
    String name;

    {
        this.name = "张三";
        System.out.println("构造代码块,在创建对象之前执行");
    }

    public ConstructorBlock() {
        System.out.println("构造方法执行");
    }

    /**
     * 下面代码执行结果是构造方法，和构造代码块中的代码都执行了两次
     * 原因是这个@Test注解它其实会调用构造方法创建对象，然后通过创建的对象调用了
     * 待测试的方法，所以会出现执行两次的情况
     */
    @Test
    public void testConstructorBlock() {
        ConstructorBlock constructorBlock = new ConstructorBlock();
    }

    public static void main(String[] args) {
        ConstructorBlock constructorBlock = new ConstructorBlock();
    }
}
